package flextestng.testing
{
	public class FlexTestNG
	{
		private var _reporters:Array = [];
		private var _suiteListeners:Array = [];
		private var _testListeners:Array = [];
		
		public function FlexTestNG()
		{
			
		}
		
		public function addReporter(reporter:IReporter):void
		{
			if (_reporters.indexOf(reporter) == -1) {
				_reporters.push(reporter);
			}
		}
		
		public function addSuiteListener(listener:ISuiteListener):void
		{
			if (_suiteListeners.indexOf(listener) == -1) {
				_suiteListeners.push(listener);
			}
		}
		
		public function addTestListener(listener:ITestListener):void
		{
			if (_testListeners.indexOf(listener) == -1) {
				_testListeners.push(listener);
			}
		}
		
		public function run():void
		{
			// generate the test methods.
			// - create an empty test suite for the test classes.
			// - add the empty suite to the array of suites for this test.
			
			// run the test.
			
			// generate the reports.
		}
		
		private var _excludedGroups:Array = [];
		public function setExcludedGroups(groups:Array):void
		{
			_excludedGroups = groups.slice();
		}
		
		private var _includedGroups:Array = [];
		public function set includedGroups(groups:Array):void
		{
			_includedGroups = groups.slice();
		}
		
		private var _testClasses:Array = [];
		public function setTestClasses(classes:Array):void
		{
			_testClasses = classes.slice();
		}
		
		private var _testSuites:Array = [];
		public function setTestSuites(suites:Array):void
		{
			_testSuites = suites.slice();
		}
	}
}